//加载第三方模块
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

//加载的路由文件
var routes = require('./routes/index');
var settings = require('./setting')
//随后我们将关于数据库操作的一系列的第三方模块引进来

//flash模块
var flash = require('connect-flash');
//支持会话
var session = require('express-session');
//将会话保存在mongodb当中去.
var MongoStore  = require('connect-mongo')(session);

//实例化一个应用
var app = express();
app.use(flash());
app.use(session({
  //防止篡改cookie
  secret:settings.cookieSecret,
  //设置值
  key:settings.db,
  //cookie的生存周期
  cookie:{maxAge:1000*60*60*24*30},
  //将session的信息存储到数据库当中去.
  store: new MongoStore({
    //连接数据库当中的blog数据库
    url: 'mongodb://localhost/blog'
  }),
  resave:false,
  saveUninitialized:true
}));


// view engine setup
//设置视图模板的路径，path指的是网站的根目录，__dirname指的是当前的文件夹
//网站根目录/views
app.set('views', path.join(__dirname, 'views'));
//视图所使用的模板引擎，这里实用的是ejs
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
//app.use(logger('dev'));
//如果是数据的话，全部用json来进行处理
app.use(bodyParser.json());
//post请求，bodyparser处理，express不知处post请求， 之支持get请求
app.use(bodyParser.urlencoded({ extended: false }));
//是用cookie
app.use(cookieParser());
//设置静态资源的目录
app.use(express.static(path.join(__dirname, 'public')));



//设置routes路由
routes(app)

app.listen(3000, function(){
  console.log('Node is running' , 3000)
})
module.exports = app;
